package com.rainng.coursesystem.module.plan.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rainng.coursesystem.base.api.dto.PagingReqDTO;
import com.rainng.coursesystem.model.vo.response.ResultVO;
import com.rainng.coursesystem.module.plan.dto.baseEntity.testReportDataBaseEntity;
import com.rainng.coursesystem.module.plan.dto.entity.*;
import com.rainng.coursesystem.module.plan.dto.request.*;
import com.rainng.coursesystem.module.plan.dto.response.testReportDataRes;
import com.rainng.coursesystem.module.task.dto.request.TaskQueryReqDTO;
import com.rainng.coursesystem.module.task.dto.response.TaskPagingResDTO;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.springframework.web.bind.annotation.RequestParam;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.List;

public interface SaveInsectionService extends IService<PlanToInsepection> {
    //分页查询拍照上传数据
    IPage<taskAssignEntity> assignpaging(PagingReqDTO<taskAssignReqDto> reqDTO);
    //保存图片上传数据
    Integer insertPhotoData(photoResultEntity photo);
    //分页查询拍照上传数据
    IPage<photoResultEntity> photopaging(PagingReqDTO<photoDataReqDto> reqDTO);
    //试验记录模板数据修改功能
    Integer updateTestTemplate(testTempateEntity tempInfo) throws InvocationTargetException, IllegalAccessException;
    //试验报告模板数据修改功能
    Integer updateReportTemplate(testReportTemplateEntity tempInfo) throws InvocationTargetException, IllegalAccessException;
    //删除实验记录模板功能
    Integer deleteTestTemplate(Integer id);
    //删除实验报告模板功能
    Integer deleteReportTemplate(Integer id);
    //保存试验记录模板数据
    ResultVO saveTestTemplate(testTempateEntity tempInfo);
    //分页查询试验记录模板数据
    IPage<testTempateEntity> paging(PagingReqDTO<testTemplateReqDto> reqDTO);
    //新增填报历史记录数据
    Integer inserttestRecordData(testDataReqDto record) throws Docx4JException, IOException;
    //获取试验记录数据列表
    IPage<testDataReqDto> recordpaging(PagingReqDTO<testDataReqDto> reqDTO);
    //保存实验报告模板
    ResultVO saveReportTemplate(testReportTemplateEntity tempInfo);
    //分页查询试验报告模板数据
    IPage<testReportTemplateEntity> reportpaging(PagingReqDTO<testReportTemplateReqDto> reqDTO);
    //根据试验记录数据生成试验报告数据
    Integer generateReportData(Integer recordDataId,String createUser,String createTime) throws IOException, Docx4JException;
    //分页查询试验报告数据
    IPage<testReportDataRes> reportdatapaging(PagingReqDTO<testReportDataBaseEntity> reqDTO);
    //实验记录编辑修改
    Integer updateTestRecordDtata(testDataReqDto testDataReq) throws InvocationTargetException, IllegalAccessException;
    //实验记录模板一键转换成实验报告模板功能
    testTempateEntity reportTransform(String veType, String prjNum) throws InvocationTargetException, IllegalAccessException;
    //将实验记录数据通过占位符的形式转移到线下Docx文档里面
    Integer TestDataToDocx(Integer id) throws Docx4JException;
    //根据ID获取实验记录上传数据
    testRecordDataEntity getRecordById(Integer id);
    //根据ID获取实验记录数据
    testReportDataEntity getReportById(Integer id);
    //根据实验记录填报文档更新数据库实测记录数据
    Integer updataTestRecordByDocx(testRecordDataEntity record);
    //实测数据记录文档补偿功能
    Integer generateRecordDocx(testRecordDataEntity record) throws IOException, Docx4JException;
    //实测数据报告文档补偿功能
    Integer generateReportDocx(testReportDataEntity report) throws IOException, Docx4JException;
    ResultVO updateStatus(PlanStatusDto reqDTO);
}
